package com.hoas.quicksdk.api.sms;

import com.hoas.quicksdk.api.ApiResult;

import java.util.List;
import java.util.Map;

/**
 * 短信发送客户端
 */
public interface SmsClient {

    /**
     * 单个模板信息，发送给一个或者多个用户
     *
     * @param phoneNumbers 手机号码
     * @param templateCode 模板编码
     * @param templateParam 模板参数
     * @param signName 签名
     * @param region 【选填】
     */
    ApiResult<SmsRsp> sendSms(String[] phoneNumbers, String templateCode, Map<String, String> templateParam, String signName, String region);

    /**
     * 单个模板信息，发送给一个或者多个用户
     *
     * @param phoneNumbers 手机号码
     * @param templateCode 模板编码
     * @param templateParam 模板参数
     */
    ApiResult<SmsRsp> sendSms(String[] phoneNumbers, String templateCode, Map<String, String> templateParam);

    /**
     * 单个模板信息，发送给一个用户
     *
     * @param phoneNumber 手机号码
     * @param templateCode 模板编码
     * @param templateParam 模板参数
     */
    ApiResult<SmsRsp> sendSms(String phoneNumber, String templateCode, Map<String, String> templateParam);

    /**
     * 相同消息模板的不同模板消息，发送给各个用户
     * @param phoneNumbers 手机号码
     * @param templateCode 模板编码
     * @param templateParams 模板参数集合,个数与手机号一致
     * @param signName 签名
     * @param region  【选填】
     */
    ApiResult<SmsRsp> sendBatchSms(String[] phoneNumbers, String templateCode, List<Map<String, String>> templateParams, String signName, String region);

    /**
     * 相同消息模板的不同模板消息，发送给各个用户
     * @param phoneNumbers 手机号码
     * @param templateCode 模板编码
     * @param templateParams 模板参数集合,个数与手机号一致
     */
    ApiResult<SmsRsp> sendBatchSms(String[] phoneNumbers, String templateCode, List<Map<String, String>> templateParams);

}
